Introduction to software Engineering and software process model Software Requirements Engineering and Analysis Estimation and Scheduling Design Engineering Risks and Configuration Management Software Testing

Introduction

Modelling Requirement Engineering

Establishing the Groundwork

Identifying Stakeholders

Recognizing Multiple viewpoint

Working towards collaboration

Ashking the first questions

Eliciting Requirement

Collaborative Requirement Gathering

Usage scenarios

Elicitation Work Product

Developing Use Cases

Building the requirements model

Elements of the Requirements Model

Analysis Patterns

Negotiating requirements

Validating Requirement

Understanding Requirements Elicitation:


Imagine you're tasked with designing and building a new mobile application for a grocery delivery service. Before you can start coding, you need to gather requirements from various stakeholders, including the business owners, delivery drivers, and customers.


Work Products of Requirements Elicitation:


1. Statement of Need and Feasibility:


This is a clear statement explaining why the grocery delivery app is needed and whether it's feasible to develop it. It outlines the problem the app will solve and the benefits it will bring.


Example: "The grocery delivery app is needed to provide convenience to busy customers who don't have time to shop for groceries in person. Feasibility studies show that the technology required for such an app is readily available."


2. Bounded Statement of Scope:


This defines the boundaries of the app's functionality and features. It helps prevent scope creep by clearly outlining what will and won't be included.


Example: "The app will allow customers to browse a selection of groceries, add items to their cart, schedule delivery times, and make payments. It will not include features for meal planning or recipe suggestions."


3. List of Stakeholders:


This includes all parties involved in the requirements elicitation process, such as business owners, developers, designers, and end-users.


Example: "Stakeholders involved in the requirements elicitation process include the CEO of the grocery delivery company, the app development team, delivery drivers, and a focus group of potential customers."


4. Description of Technical Environment:


This describes the technological infrastructure required to support the app, including server hosting, databases, APIs, and third-party integrations.


Example: "The app will be hosted on cloud servers, with a backend database to store user information and order data. It will integrate with Google Maps for location services and Stripe for payment processing."


5. List of Requirements:


This is a detailed list of all the features, functionalities, and constraints of the app, organized by function. It serves as a blueprint for the development team.


Example: "Requirements include user authentication for secure logins, a searchable catalog of grocery items, a checkout process with multiple payment options, and push notifications for order updates."


6. Usage Scenarios:


These are detailed descriptions of how users will interact with the app in different scenarios or use cases. They provide insight into the user experience.


Example: "A usage scenario involves a busy parent who needs to order groceries while at work. They open the app, browse for items, add them to their cart, select a delivery time, and complete the purchase."


7. Prototypes:


These are mockups or simplified versions of the app designed to visualize requirements and gather feedback from stakeholders.


Example: "A prototype of the app includes wireframes of the user interface, showing the layout of screens, buttons, and menus. Stakeholders can interact with the prototype to get a feel for the app's functionality."


Conclusion:


Requirements elicitation is a critical step in the software development process, laying the groundwork for building successful applications. By carefully gathering and documenting requirements, developers can ensure that their products meet the needs of stakeholders and users, leading to satisfied customers and successful projects.

Software


Software refers to the set of programs, data, and instructions that enable computers to perform specific tasks or functions. It encompasses applications, operating systems, and utilities designed to fulfill user needs, enhancing productivity, communication, entertainment, and virtually all aspects of modern life through computational processes and data manipulation.


Software Engineering


Software Engineering is the disciplined application of principles, methods, and tools to develop, test, deploy, and maintain high-quality software systems. It involves systematic approaches to problem-solving, project management, and teamwork, aiming to meet user needs efficiently while adhering to standards and best practices throughout the software development lifecycle.